﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace _2_8
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void label1_Click(object sender, EventArgs e)
        {

        }

        private void label3_Click(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            // 1. 第一步：判断输入是否为单个字符（文档要求：输入必须是单个字符，{insert\_element\_11\_}）
            string input = textBox1.Text;
            if (input.Length != 1)
            {
                // 弹出输入错误提示（参考文档中消息提示框用法，{insert\_element\_12\_}）
                MessageBox.Show("只能输入1个字符！", "输入错误", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                textBox1.Text = ""; // 清空输入框，方便用户重新输入
                textBox1.Focus(); // 光标聚焦回输入框，提升交互体验
                return;
            }

            // 2. 第二步：提取输入字符，判断字符类型（数字、大写字母、小写字母）
            char inputChar = input[0];
            int baseAscii; // 基准ASCII码：数字1对应49、大写A对应65、小写a对应97（{insert\_element\_13\_}）
            int loopCount; // 三角形的行数：输入字符与基准ASCII码的差值+1（{insert\_element\_14\_}）

            if (Char.IsNumber(inputChar))
            {
                // 判断数字是否在1-9范围内（文档要求：仅支持数字1-9，{insert\_element\_15\_}）
                if (inputChar < '1' || inputChar > '9')
                {
                    MessageBox.Show("您输入的数字不合法，只能是1-9！", "输入错误", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    textBox1.Text = "";
                    textBox1.Focus();
                    return;
                }
                baseAscii = 49; // 数字1的ASCII码为49（{insert\_element\_16\_}）
            }
            else if (Char.IsUpper(inputChar))
            {
                baseAscii = 65; // 大写字母A的ASCII码为65（{insert\_element\_17\_}）
            }
            else if (Char.IsLower(inputChar))
            {
                baseAscii = 97; // 小写字母a的ASCII码为97（{insert\_element\_18\_}）
            }
            else
            {
                // 输入非规定字符（如符号、空格），弹出错误提示（{insert\_element\_19\_}）
                MessageBox.Show("您输入的字符不合法，只能是大小写字母或数字1-9！", "输入错误", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                textBox1.Text = "";
                textBox1.Focus();
                return;
            }

            // 3. 第三步：计算三角形行数（输入字符ASCII码 - 基准ASCII码 + 1）
            loopCount = inputChar - baseAscii + 1;
            label3.Text = ""; // 清空之前的输出结果，避免叠加

            // 4. 第四步：双重循环打印三角形（外层控制行数，内层分别控制空格和字符，{insert\_element\_20\_}）
            for (int i = 0; i < loopCount; i++)
            {
                // 内层循环1：打印空格（实现三角形右对齐，第i行空格数=总行数 - i - 1）
                for (int j = 0; j < loopCount - i - 1; j++)
                {
                    label3.Text += " "; // 每个空格用英文半角空格，确保对齐
                }

                // 内层循环2：打印字符（第i行字符数=2*i+1，字符为“基准ASCII码+i”对应的字符）
                char currentPrintChar = (char)(baseAscii + i);
                for (int k = 0; k < 2 * i + 1; k++)
                {
                    label3.Text += currentPrintChar;
                }

                // 每行结束后换行（Windows系统换行符为\r\n，确保换行正常）
                label3.Text += "\r\n";
            }
        
    }

        private void button2_Click(object sender, EventArgs e)
        {
            textBox1.Text = ""; // 清空输入字符的文本框
            label3.Text = "输出结果"; // 重置输出标签为初始提示文本（与界面设计一致）
            textBox1.Focus(); // 光标聚焦回输入框，方便用户再次输入
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            label3.Text = "输出结果"; // 初始显示“输出结果”提示
            textBox1.Focus(); // 窗体加载后，光标自动聚焦到输入框
        }
    }
}
